package cn.com.aiouyi.exception.handler;

import java.io.Writer;

import freemarker.core.Environment;
import freemarker.core.InvalidReferenceException;
import freemarker.template.TemplateException;
import freemarker.template.TemplateExceptionHandler;

/**
 * FreeMarker异常处理
 * 
 * @author hanson
 */
public class FreeMarkerExceptionHandler implements TemplateExceptionHandler {

	/** 默认模板异常处理 */
	private static final TemplateExceptionHandler DEFAULT_TEMPLATE_EXCEPTION_HANDLER = TemplateExceptionHandler.DEBUG_HANDLER;

	/**
	 * 模板异常处理
	 * 
	 * @param te
	 *            模板异常
	 * @param env
	 *            环境变量
	 * @param out
	 *            输出
	 */
	public void handleTemplateException(TemplateException te, Environment env, Writer out) throws TemplateException {
		if(te instanceof InvalidReferenceException){
	       /* String missingVariable = "undefined";  
			String[] tmp = te.getMessageWithoutStackTop().split("\n");  
	        if (tmp.length > 1)  
	            tmp = tmp[1].split(" ");  
	        if (tmp.length > 1)  
	            missingVariable = tmp[1];  
	        logger.error("[freemarker变量"+missingVariable+"解析有误]", te);*/
		}else{
			DEFAULT_TEMPLATE_EXCEPTION_HANDLER.handleTemplateException(te, env, out);
		}
        
	}

}